{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Intro"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "import os\n",
    "import numpy.random as rnd"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Training & Visualization"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "DecisionTreeClassifier(class_weight=None, criterion='gini', max_depth=2,\n",
       "            max_features=None, max_leaf_nodes=None,\n",
       "            min_impurity_split=1e-07, min_samples_leaf=1,\n",
       "            min_samples_split=2, min_weight_fraction_leaf=0.0,\n",
       "            presort=False, random_state=None, splitter='best')"
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# load iris dataset & train a DT classifier\n",
    "\n",
    "from sklearn.datasets import load_iris\n",
    "from sklearn.tree import DecisionTreeClassifier\n",
    "\n",
    "iris = load_iris()\n",
    "X = iris.data[:, 2:] # petal length and width\n",
    "y = iris.target\n",
    "tree_clf = DecisionTreeClassifier(max_depth=2)\n",
    "tree_clf.fit(X, y)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "# graph it into a .dot file\n",
    "\n",
    "from sklearn.tree import export_graphviz\n",
    "\n",
    "def image_path(fig_id):\n",
    "    #return os.path...\n",
    "    return fig_id\n",
    "\n",
    "export_graphviz(\n",
    "    tree_clf,\n",
    "    out_file=image_path(\"iris_tree.dot\"),\n",
    "    feature_names=iris.feature_names[2:],\n",
    "    class_names=iris.target_names,\n",
    "    rounded=True,\n",
    "    filled=True\n",
    ")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "# convert to PDF or PNG using command-line tool.\n",
    "! dot -Tpng iris_tree.dot -o iris_tree.png"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "![result](pics/iris_tree.png)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Predictions\n",
    "\n",
    "* DTs require very little data prep. No feature scaling & centering.\n",
    "* SciKit uses CART algorithm. (only two children per node.) Other algos, ex ID3, can build DTs with >2 children per node.\n",
    "* *gini* attribute refers to a node's \"impurity\" (gini=0 if all applicable training instances belong to same class.)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\nIiKSo/4/RII8+u+gl4oAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f8c901d6080>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Plot DT decision boundaries\n",
    "# Depth=0: root node (petal length=2.45cm)\n",
    "# Depth=1: right node splits @ 1.75cm\n",
    "# Stops at max_depth = 2.\n",
    "# Vertical dotted line shows boundary if max_depth set = 3.\n",
    "\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "from matplotlib.colors import ListedColormap\n",
    "\n",
    "def plot_decision_boundary(clf, X, y, axes=[0, 7.5, 0, 3], iris=True, legend=False, plot_training=True):\n",
    "    x1s = np.linspace(axes[0], axes[1], 100)\n",
    "    x2s = np.linspace(axes[2], axes[3], 100)\n",
    "    x1, x2 = np.meshgrid(x1s, x2s)\n",
    "    X_new = np.c_[x1.ravel(), x2.ravel()]\n",
    "    y_pred = clf.predict(X_new).reshape(x1.shape)\n",
    "    custom_cmap = ListedColormap(['#fafab0','#9898ff','#a0faa0'])\n",
    "    plt.contourf(x1, x2, y_pred, alpha=0.3, cmap=custom_cmap, linewidth=10)\n",
    "    if not iris:\n",
    "        custom_cmap2 = ListedColormap(['#7d7d58','#4c4c7f','#507d50'])\n",
    "        plt.contour(x1, x2, y_pred, cmap=custom_cmap2, alpha=0.8)\n",
    "    if plot_training:\n",
    "        plt.plot(X[:, 0][y==0], X[:, 1][y==0], \"yo\", label=\"Iris-Setosa\")\n",
    "        plt.plot(X[:, 0][y==1], X[:, 1][y==1], \"bs\", label=\"Iris-Versicolor\")\n",
    "        plt.plot(X[:, 0][y==2], X[:, 1][y==2], \"g^\", label=\"Iris-Virginica\")\n",
    "        plt.axis(axes)\n",
    "    if iris:\n",
    "        plt.xlabel(\"Petal length\", fontsize=14)\n",
    "        plt.ylabel(\"Petal width\", fontsize=14)\n",
    "    else:\n",
    "        plt.xlabel(r\"$x_1$\", fontsize=18)\n",
    "        plt.ylabel(r\"$x_2$\", fontsize=18, rotation=0)\n",
    "    if legend:\n",
    "        plt.legend(loc=\"lower right\", fontsize=14)\n",
    "\n",
    "plt.figure(figsize=(8, 4))\n",
    "plot_decision_boundary(tree_clf, X, y)\n",
    "plt.plot([2.45, 2.45], [0, 3], \"k-\", linewidth=2)\n",
    "plt.plot([2.45, 7.5], [1.75, 1.75], \"k--\", linewidth=2)\n",
    "plt.plot([4.95, 4.95], [0, 1.75], \"k:\", linewidth=2)\n",
    "plt.plot([4.85, 4.85], [1.75, 3], \"k:\", linewidth=2)\n",
    "plt.text(1.40, 1.0, \"Depth=0\", fontsize=15)\n",
    "plt.text(3.2, 1.80, \"Depth=1\", fontsize=13)\n",
    "plt.text(4.05, 0.5, \"(Depth=2)\", fontsize=11)\n",
    "\n",
    "#save_fig(\"decision_tree_decision_boundaries_plot\")\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Estimating Class Probabilities\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[[ 0.          0.90740741  0.09259259]]\n",
      "[1]\n"
     ]
    }
   ],
   "source": [
    "# Probability of instance 5cm long, 1.5cm wide belonging to any one of three nodes above:\n",
    "print(tree_clf.predict_proba([[5, 1.5]]))\n",
    "\n",
    "# Return class of highest probability (in this case, class #1.)\n",
    "print(tree_clf.predict([[5, 1.5]]))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Training: CART algorithm\n",
    "* Split training set in two using feature *k* and threshold *t_k*.\n",
    "* Searches for pair *(k, t_k)* that returns purest subsets, weighted by size.\n",
    "* Cost function to minimize shown below.\n",
    "\n",
    "![CART](pics/CART-algorithm.png)\n",
    "\n",
    "* \"Greedy\" algorithm; searches for optimum at each level w/o regard for lower levels. Not guaranteed to find optimum solution."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Computational Complexity\n",
    "* Typical: O(log2(m)) = independent of #features. (So: very fast prediction times.)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Gini Impurity, or Entropy?\n",
    "* Can use entropy measure by setting *criterion* parameter to \"entropy\".\n",
    "![entrpopy](pics/entropy.png)\n",
    "\n",
    "* Dataset's entropy = 0 when it contains instances of only one class.\n",
    "* Can use either; Gini impurity = slightly faster. Entropy tends to build slightly more balanced trees."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Regularization Hyperparameters\n",
    "\n",
    "* *max_depth* controls max depth of the DT. Reducing *max_depth* regularizes the model, therefore reduces risk of overfit.\n",
    "* Also: *min_samples_split*, *min_samples_leaf*, *min_weight_fraction_leaf*, *max_leaf_nodes*, *max_features* -- increasing min_* or reducing max_* params will regularize the model."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\naboZ5RwAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f8c9af8cc50>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Train two DTs on moons dataset.\n",
    "# left: default params = no restrictions (case of overfitting)\n",
    "# right: min_samples_leaf = 4. (better generalization)\n",
    "\n",
    "from sklearn.datasets import make_moons\n",
    "Xm, ym = make_moons(n_samples=100, noise=0.25, random_state=53)\n",
    "\n",
    "deep_tree_clf1 = DecisionTreeClassifier(random_state=42)\n",
    "deep_tree_clf2 = DecisionTreeClassifier(min_samples_leaf=4, random_state=42)\n",
    "deep_tree_clf1.fit(Xm, ym)\n",
    "deep_tree_clf2.fit(Xm, ym)\n",
    "\n",
    "plt.figure(figsize=(11, 4))\n",
    "plt.subplot(121)\n",
    "plot_decision_boundary(deep_tree_clf1, Xm, ym, axes=[-1.5, 2.5, -1, 1.5], iris=False)\n",
    "plt.title(\"No restrictions\", fontsize=16)\n",
    "plt.subplot(122)\n",
    "plot_decision_boundary(deep_tree_clf2, Xm, ym, axes=[-1.5, 2.5, -1, 1.5], iris=False)\n",
    "plt.title(\"min_samples_leaf = {}\".format(deep_tree_clf2.min_samples_leaf), fontsize=14)\n",
    "\n",
    "#save_fig(\"min_samples_leaf_plot\")\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Regression\n",
    "* Task: Predict a value (instead of a class) for each node.\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "collapsed": false,
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\nIiIiXvh/vOp4FA6l6REAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f8c8a26db00>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "from sklearn.tree import DecisionTreeRegressor\n",
    "\n",
    "# Quadrat!ic training set + noise\n",
    "rnd.seed(42)\n",
    "m = 200\n",
    "X = rnd.rand(m, 1)\n",
    "y = 4 * (X - 0.5) ** 2\n",
    "y = y + rnd.randn(m, 1) / 10\n",
    "\n",
    "tree_reg1 = DecisionTreeRegressor(random_state=42, max_depth=2)\n",
    "tree_reg2 = DecisionTreeRegressor(random_state=42, max_depth=3)\n",
    "tree_reg1.fit(X, y)\n",
    "tree_reg2.fit(X, y)\n",
    "\n",
    "def plot_regression_predictions(tree_reg, X, y, axes=[0, 1, -0.2, 1], ylabel=\"$y$\"):\n",
    "    x1 = np.linspace(axes[0], axes[1], 500).reshape(-1, 1)\n",
    "    y_pred = tree_reg.predict(x1)\n",
    "    plt.axis(axes)\n",
    "    plt.xlabel(\"$x_1$\", fontsize=18)\n",
    "    if ylabel:\n",
    "        plt.ylabel(ylabel, fontsize=18, rotation=0)\n",
    "    plt.plot(X, y, \"b.\")\n",
    "    plt.plot(x1, y_pred, \"r.-\", linewidth=2, label=r\"$\\hat{y}$\")\n",
    "\n",
    "plt.figure(figsize=(11, 4))\n",
    "plt.subplot(121)\n",
    "plot_regression_predictions(tree_reg1, X, y)\n",
    "for split, style in ((0.1973, \"k-\"), (0.0917, \"k--\"), (0.7718, \"k--\")):\n",
    "    plt.plot([split, split], [-0.2, 1], style, linewidth=2)\n",
    "plt.text(0.21, 0.65, \"Depth=0\", fontsize=15)\n",
    "plt.text(0.01, 0.2, \"Depth=1\", fontsize=13)\n",
    "plt.text(0.65, 0.8, \"Depth=1\", fontsize=13)\n",
    "plt.legend(loc=\"upper center\", fontsize=18)\n",
    "plt.title(\"max_depth=2\", fontsize=14)\n",
    "\n",
    "plt.subplot(122)\n",
    "plot_regression_predictions(tree_reg2, X, y, ylabel=None)\n",
    "for split, style in ((0.1973, \"k-\"), (0.0917, \"k--\"), (0.7718, \"k--\")):\n",
    "    plt.plot([split, split], [-0.2, 1], style, linewidth=2)\n",
    "for split in (0.0458, 0.1298, 0.2873, 0.9040):\n",
    "    plt.plot([split, split], [-0.2, 1], \"k:\", linewidth=1)\n",
    "plt.text(0.3, 0.5, \"Depth=2\", fontsize=13)\n",
    "plt.title(\"max_depth=3\", fontsize=14)\n",
    "\n",
    "plt.show()\n",
    "\n",
    "# Predicted value for each region (red line) = avg target value of instances in that region."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "* Instead of trying to minimize impurity (classification) DTs now try to minimize MSE:\n",
    "![CART regression](pics/CART-regression-cost.png)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\nRK5CYII=\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f8c9afacb70>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "tree_reg1 = DecisionTreeRegressor(random_state=42)\n",
    "tree_reg2 = DecisionTreeRegressor(random_state=42, min_samples_leaf=10)\n",
    "tree_reg1.fit(X, y)\n",
    "tree_reg2.fit(X, y)\n",
    "\n",
    "x1 = np.linspace(0, 1, 500).reshape(-1, 1)\n",
    "y_pred1 = tree_reg1.predict(x1)\n",
    "y_pred2 = tree_reg2.predict(x1)\n",
    "\n",
    "plt.figure(figsize=(11, 4))\n",
    "\n",
    "plt.subplot(121)\n",
    "plt.plot(X, y, \"b.\")\n",
    "plt.plot(x1, y_pred1, \"r.-\", linewidth=2, label=r\"$\\hat{y}$\")\n",
    "plt.axis([0, 1, -0.2, 1.1])\n",
    "plt.xlabel(\"$x_1$\", fontsize=18)\n",
    "plt.ylabel(\"$y$\", fontsize=18, rotation=0)\n",
    "plt.legend(loc=\"upper center\", fontsize=18)\n",
    "plt.title(\"No restrictions\", fontsize=14)\n",
    "\n",
    "plt.subplot(122)\n",
    "plt.plot(X, y, \"b.\")\n",
    "plt.plot(x1, y_pred2, \"r.-\", linewidth=2, label=r\"$\\hat{y}$\")\n",
    "plt.axis([0, 1, -0.2, 1.1])\n",
    "plt.xlabel(\"$x_1$\", fontsize=18)\n",
    "plt.title(\"min_samples_leaf={}\".format(tree_reg2.min_samples_leaf), fontsize=14)\n",
    "\n",
    "#save_fig(\"tree_regression_regularization_plot\")\n",
    "plt.show()\n",
    "\n",
    "# left: no regularization (default params): overfitting\n",
    "# right: more reasonable."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Instability\n",
    "* DTs strongly favor orthogonal decision boundaries. They are **sensitive to training set rotations**.\n",
    "* More generally: DTs are sensitive to training data variations."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f8c8a3ea240>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "rnd.seed(6)\n",
    "Xs = rnd.rand(100, 2) - 0.5\n",
    "ys = (Xs[:, 0] > 0).astype(np.float32) * 2\n",
    "\n",
    "angle = np.pi / 4\n",
    "rotation_matrix = np.array(\n",
    "    [[np.cos(angle), -np.sin(angle)], \n",
    "     [np.sin(angle), np.cos(angle)]])\n",
    "\n",
    "Xsr = Xs.dot(rotation_matrix)\n",
    "\n",
    "tree_clf_s = DecisionTreeClassifier(random_state=42)\n",
    "tree_clf_s.fit(Xs, ys)\n",
    "tree_clf_sr = DecisionTreeClassifier(random_state=42)\n",
    "tree_clf_sr.fit(Xsr, ys)\n",
    "\n",
    "plt.figure(figsize=(11, 4))\n",
    "plt.subplot(121)\n",
    "plot_decision_boundary(tree_clf_s, Xs, ys, axes=[-0.7, 0.7, -0.7, 0.7], iris=False)\n",
    "plt.subplot(122)\n",
    "plot_decision_boundary(tree_clf_sr, Xsr, ys, axes=[-0.7, 0.7, -0.7, 0.7], iris=False)\n",
    "\n",
    "#save_fig(\"sensitivity_to_rotation_plot\")\n",
    "plt.show()\n",
    "\n",
    "# left: std linearly separable dataset\n",
    "# right: dataset rotated by 45degrees."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python [Root]",
   "language": "python",
   "name": "Python [Root]"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.5.2"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
